热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

技术干货|服务编排—Conductor

Conductor是开源的,

 
 
Conductor是开源的,基于微服务编排引擎。
 
 


为方便理解Conductor的机制,我们不妨结合业务场景来讲,如果我们要访问应用A进行用户信息查询,传统的处理方式如下:



传统的处理方式耦合度非常高,当需要调整某个模块时会涉及到其他模块的接口的交互和稳定性,从MVC到SOA,以及到现在的微服务,都在一定程度上解决模块与模块之间的耦合度问题。


我们接着拆分,如果接入SSO,增加认证方式,处理的方式就会变成如下形式:



这里把认证模块独立为一个应用对外提供服务,这就是我们耳熟能详的SSO雏形。


接着对某些数据进行加密处理后再进行展现,我们如果不改造应用A又该怎么处理呢?当然增加API网关是可以达到相同的目的,处理方式变成如下:



API网关增加加密插件模块,配置应用A对外提供服务,对访问应用API的特定URL数据进行加密处理或解析相应的数据变量进行定位处理,虽然复杂些,但也能达到想要的效果,只不过一旦应用A需要加密的变量发生变化,API网关同样存在重新调整的风险,耦合度还是太高。



现在我们再进一步场景细化,看看该如何处理。


如果要把应用A加密的数据给应用B来展现呢?或者B获取到A的加密数据后进行处理,把处理后的数据再返回给应用A展现呢?(典型的有OCSP、证书的签名与验签案例)。




当然如果非要用API网关解决也是可以的,但随着业务的复杂度,API网关的业务逻辑耦合度会越来越高,崩溃只是时间问题。何况API网关是用来解决访问安全问题的,并不适合处理复杂的业务逻辑问题。


那么该怎么解决类似的问题呢?


Conductor的架构为我们提供了优雅解决这些问题的方法,它的处理模式如下:



从上图我们可以看出Conductor是如何编排各个微服务的,由于整个机制为事件驱动模式,需要应用集成Conductor的客户端SDK,任务分为System Task(在Conductor服务器的JVM内执行,由Conductor管理)和Worker Task(由应用实现并在独立的环境中运行)。


最后我们来看看Conductor的运行模式(如下图—来自官网)



Worker作为应用端,可以用任何语言实现,这些任务通过REST API或gRPC机制与Conductor服务端通讯,以轮询任务的方式执行后再更新其状态。Task Queues用于为Worker编排的任务,可以与SQS(Simple Queue Service)或发布与订阅(Pub/Sub)机制进行交换,Conductor持久化模块使用Dynomite(分布式的缓存系统)存储状态,以及用Elasticsearch(分布式多用户能力的全文搜索引擎)用于索引后端,当然这些根据实际的业务需求都是可替换的。


 


往期精彩回顾
 
 
 
 
技术干货 | 服务编排前传—缘起
技术干货 | 服务编排基础—状态机
技术干货 | IAM产品选型三步曲
技术干货 | 大数据平台的多租户管理
技术干货 | 浅谈DevOps实践
 




推荐阅读
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 阿里面试题解析:分库分表后的无限扩容瓶颈与解决方案
    本文探讨了在分布式系统中,分库分表后的无限扩容问题及其解决方案。通过分析不同阶段的服务架构演变,提出了单元化作为解决数据库连接数过多的有效方法。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文讲述了一位80后的普通男性程序员,尽管没有高学历,但通过不断的努力和学习,在IT行业中逐渐找到了自己的位置。从最初的仓库管理员到现在的多技能开发者,他的职业生涯充满了挑战与机遇。 ... [详细]
  • 在运行于MS SQL Server 2005的.NET 2.0 Web应用中,我偶尔会遇到令人头疼的SQL死锁问题。过去,我们主要通过调整查询来解决这些问题,但这既耗时又不可靠。我希望能找到一种确定性的查询模式,确保从设计上彻底避免SQL死锁。 ... [详细]
  • 本文通过基准测试(Benchmark)对.NET Core环境下Thrift和HTTP客户端的微服务通信性能进行对比分析。基准测试是一种评估系统或组件性能的方法,通过运行一系列标准化的测试来衡量其表现。 ... [详细]
  • 本文介绍了多种开源数据库及其核心数据结构和算法,包括MySQL的B+树、MVCC和WAL,MongoDB的tokuDB和cola,boltDB的追加仅树和mmap,levelDB的LSM树,以及内存缓存中的一致性哈希。 ... [详细]
  • Ext JS MVC系列一:环境搭建与框架概览
    本文主要介绍了如何在项目中使用Ext JS 4作为前端框架,并详细讲解了Ext JS 4的MVC开发模式。文章将从项目目录结构、相关CSS和JS文件的引用以及MVC框架的整体认识三个方面进行总结。 ... [详细]
  • 本文详细介绍了数据库并发控制的基本概念、重要性和具体实现方法。并发控制是确保多个事务在同时操作数据库时保持数据一致性的关键机制。文章涵盖了锁机制、多版本并发控制(MVCC)、乐观并发控制和悲观并发控制等内容。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 在什么情况下MySQL的可重复读隔离级别会导致幻读现象? ... [详细]
  • 系统数据实体验证异常:多个实体验证失败的错误处理与分析
    在使用MVC和EF框架进行数据保存时,遇到了 `System.Data.Entity.Validation.DbEntityValidationException` 错误,表明存在一个或多个实体验证失败的情况。本文详细分析了该错误的成因,并提出了有效的处理方法,包括检查实体属性的约束条件、调试日志的使用以及优化数据验证逻辑,以确保数据的一致性和完整性。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 本文详细探讨了几种常用的Java后端开发框架组合及其具体应用场景。通过对比分析Spring Boot、MyBatis、Hibernate等框架的特点和优势,结合实际项目需求,为开发者提供了选择合适框架组合的参考依据。同时,文章还介绍了这些框架在微服务架构中的应用,帮助读者更好地理解和运用这些技术。 ... [详细]
author-avatar
手机用户2502916905
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有